iT邦幫忙

2024 iThome 鐵人賽

DAY 16
0
Python

30天Python資料分析挑戰:從基礎到視覺化系列 第 16

Day 16: 資料合併與連接

  • 分享至 

  • xImage
  •  

Day 16: 資料合併與連接

在資料分析過程中,我們經常需要處理來自多個來源的資料,將它們整合在一起以進行進一步的分析。Pandas 提供了強大的工具來合併和連接不同的資料框(DataFrames)。今天,我們將學習如何使用 merge()concat() 函數來將多個資料集整合在一起。
先在同一個資料夾裡面,建立一個檔案叫做merge
https://ithelp.ithome.com.tw/upload/images/20240930/20140380OROfNUy8KE.jpg

1. 載入資料集

我們將使用兩個範例資料框來進行合併和連接的操作。

import pandas as pd

# 建立範例資料框 1
data1 = {'id': [1, 2, 3, 4],
         'name': ['Alice', 'Bob', 'Charlie', 'David'],
         'score': [85, 90, 95, 80]}
df1 = pd.DataFrame(data1)

# 建立範例資料框 2
data2 = {'id': [3, 4, 5, 6],
         'name': ['Charlie', 'David', 'Eve', 'Frank'],
         'age': [23, 25, 22, 21]}
df2 = pd.DataFrame(data2)

# 顯示兩個資料框
print("資料框 1:")
print(df1)
print("\n資料框 2:")
print(df2)

https://ithelp.ithome.com.tw/upload/images/20240930/20140380peBRzxfLfe.jpg
以上程式碼建立了兩個範例資料框 df1df2,其中 id 欄位是共同的鍵值,其他欄位則有不同的資訊。

2. 使用 merge() 進行資料合併

merge() 函數允許我們根據一個或多個鍵進行資料合併。常見的合併方式包括內連接、外連接、左連接和右連接。這裡我們根據 id 欄位進行合併。

2.1 內連接 (Inner Join)

# 使用內連接(inner join)進行合併
merged_inner = pd.merge(df1, df2, on='id', how='inner')

# 顯示結果
print("\n內連接結果(inner join):")
print(merged_inner)

https://ithelp.ithome.com.tw/upload/images/20240930/20140380SD5xvZYqxo.jpg
內連接只會保留兩個資料框中 id 欄位匹配的資料。

2.2 外連接 (Outer Join)

# 使用外連接(outer join)進行合併
merged_outer = pd.merge(df1, df2, on='id', how='outer')

# 顯示結果
print("\n外連接結果(outer join):")
print(merged_outer)

https://ithelp.ithome.com.tw/upload/images/20240930/20140380s40ZHbtaCh.jpg
外連接會保留所有資料,即使某些資料框中的 id 欄位不匹配,會填補缺失值。

2.3 左連接 (Left Join)

# 使用左連接(left join)進行合併
merged_left = pd.merge(df1, df2, on='id', how='left')

# 顯示結果
print("\n左連接結果(left join):")
print(merged_left)

https://ithelp.ithome.com.tw/upload/images/20240930/20140380bxOKunLSct.jpg
左連接會保留左邊資料框 df1 的所有資料,並補上右邊資料框 df2 中對應的資料。

2.4 右連接 (Right Join)

# 使用右連接(right join)進行合併
merged_right = pd.merge(df1, df2, on='id', how='right')

# 顯示結果
print("\n右連接結果(right join):")
print(merged_right)

https://ithelp.ithome.com.tw/upload/images/20240930/20140380L6QxzjzYBp.jpg
右連接則會保留右邊資料框 df2 的所有資料。

3. 使用 concat() 進行資料連接

concat() 函數允許我們在行或列上將資料進行連接。我們可以用它來合併多個資料框,甚至將資料加在一起。

3.1 按列連接

# 按列(axis=1)連接資料框
concatenated_columns = pd.concat([df1, df2], axis=1)

# 顯示結果
print("\n按列連接的結果:")
print(concatenated_columns)

https://ithelp.ithome.com.tw/upload/images/20240930/20140380vYBmiuMw6R.jpg
這會將兩個資料框在列上連接,並保留所有資料。

3.2 按行連接

# 按行(axis=0)連接資料框
concatenated_rows = pd.concat([df1, df2], axis=0, ignore_index=True)

# 顯示結果
print("\n按行連接的結果:")
print(concatenated_rows)

https://ithelp.ithome.com.tw/upload/images/20240930/20140380SYo9Oz14aT.jpg
這會將兩個資料框在行上連接,並重新索引。

4. 小結

今天我們學習了如何使用 Pandas 進行資料的合併與連接,包括:

  • 使用 merge() 進行內連接、外連接、左連接和右連接
  • 使用 concat() 進行資料的列或行連接

這些技術非常有用,尤其是在處理來自不同資料來源的資料時。接下來,我們將學習如何進行資料的視覺化,為資料分析提供更直觀的解讀。


上一篇
Day 15: 簡單的 Markdown 語法教學
下一篇
Day 17: 簡單的資料視覺化 (介紹 Matplotlib 與 Seaborn)
系列文
30天Python資料分析挑戰:從基礎到視覺化30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言